﻿using DocumentFormat.OpenXml.Lite.SpreadsheetML.Excel.WorksheetElements;
using DocumentFormat.OpenXml.Lite.Xml;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace DocumentFormat.OpenXml.Lite.SpreadsheetML.Excel.Table
{
    [XmlRoot("filterColumn", Namespace = Constants.ExcelMain)]
    public class FilterColumn : XmlSerializable
    {
        [XmlAttribute("colId", Form = XmlSchemaForm.Qualified)]
        public uint ColumnId { get; set; }

        [Optional]
        [XmlAttribute("hiddenButton", Form = XmlSchemaForm.Qualified)]
        public Nullable<bool> HiddenButton { get; set; }

        [Optional]
        [XmlAttribute("showButton", Form = XmlSchemaForm.Qualified)]
        public Nullable<bool> ShowButton { get; set; }

        [Optional]
        [XmlElement("filters", Namespace = Constants.ExcelMain)]
        public Filters Filters { get; set; }

        [Optional]
        [XmlElement("top10", Namespace = Constants.ExcelMain)]
        public Top10 Top10 { get; set; }

        [Optional]
        [XmlElement("customFilters", Namespace = Constants.ExcelMain)]
        public CustomFilters CustomFilters { get; set; }

        [Optional]
        [XmlElement("dynamicFilter", Namespace = Constants.ExcelMain)]
        public DynamicFilter DynamicFilter { get; set; }

        [Optional]
        [XmlElement("colorFilter", Namespace = Constants.ExcelMain)]
        public ColorFilter ColorFilter { get; set; }

        [Optional]
        [XmlElement("iconFilter", Namespace = Constants.ExcelMain)]
        public IconFilter IconFilter { get; set; }

        [Optional]
        [XmlElement("extLst", Namespace = Constants.ExcelMain)]
        public ExtensionList ExtensionList { get; set; }

        public FilterColumn() { }
    }
}
